package cn.alex.sso.project.sync.module;

import cn.alex.sso.project.sync.entity.DataSyncEntity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 定义数据同步模块接口(需要同步的数据模块需要实现该接口)
 *
 * @author Alex
 * @date 2024/12/1 03:29
 */
public interface DataSyncModule {
    /**
     * 获取模块名称
     *
     * @return 模块名称
     */
    DataSyncEntity getModule();

    /**
     * 获取模块数据同步类型
     *
     * @return 模块数据同步类型
     */
    List<DataSyncEntity> getTriggerList();

    /**
     * 获取模块信息
     *
     * @return 模块信息
     */
    default Map<String, Object> getInfo() {
        return new HashMap<String, Object>(2) {{
            put("module", getModule());
            put("triggerList", getTriggerList());
        }};
    }
}
